The present invention relates generally to embedded systems, and more specifically, to a method and system for executing a software application that is larger than an available memory out of which the software has to execute in the embedded system.
An embedded system is a computer system that is designed to perform a specific function. Some examples of devices having embedded systems include Personal Digital Assistants (PDA), mobile devices and routers. Embedded systems are usually designed with limited hardware to minimize cost. Software applications in an embedded system are usually stored in its Read Only Memory (ROM) and executed out of its Random Access Memory (RAM). Examples of a software application include firmware like the Basic Integrated Operating System (BIOS) in a personal computer, Open Firmware and a Media Access Control (MAC) software code in a network processor.
A bootloader is a special program used to load software code in the memory to start an embedded system application when a user turns on an embedded system device. A boot sequence is a set of operations performed by the embedded system to load a software application in the memory of the embedded system. Because of the use of limited hardware in an embedded system, the size of the internal RAM available for executing a software application in an embedded system can be less than the binary size of the software application itself. In an embedded system with an external RAM, the external RAM can be used in conjunction with the internal RAM to execute the software application.
For an embedded system without an external RAM, the internal RAM needs to be used efficiently to execute a software application. Hence, it is desirable to reduce the binary size of software code that is executed in the RAM of an embedded system.